let arr = [5, 3, 2, 4, 1]
// 找数组下标[0, length - 1]中的最小值，找到了就跟当前这个区间的最左边的元素换位置
// 找数组下标[1, length - 1]中的最小值，找到了就跟当前这个区间的最左边的元素换位置
// 找数组下标[2, length - 1]中的最小值，找到了就跟当前这个区间的最左边的元素换位置
// ...

function selectSort(arr) {
  const len = arr.length
  let minIndex; // 存放最小值的下标

  for (let i = 0; i < len; i++) {
    minIndex = i

    for (let j = i; j < len; j++) { // 找最小值
      // 如果区间内的值比当前区间最左边的值还小
      if (arr[j] < arr[minIndex]) {
        minIndex = j // 1 2 4
      }
    }
    if (minIndex !== i) {
      [ arr[i], arr[minIndex] ] = [ arr[minIndex], arr[i] ]
    }
  }

  return arr
}

let newArr = selectSort(arr)
console.log(newArr);




// [5, 3, 2, 4, 1]  [0 - 4]

// [1, 3, 2, 4, 5]  [1 - 4]

// [1, 2, 3, 4, 5]  [2 - 4]

// [1, 3, 2, 4, 5]  [3 - 4]